// 导入用于生成 JWT 字符串的包
const jwt = require('jsonwebtoken');

// 导入用户将客户端发送过来的 JWT 字符串，解析还原成 JSON 对象的包
const { expressjwt} = require('express-jwt'); // 注意这里使用小写

// 这个 secretKey 是可以是任意的字符串
const secretKey = 'AHa_2024!^_^';

// 生成 JWT 字符串的方法
const createToken = (data) => {
    // 生成 JWT 字符串
    return jwt.sign(data, secretKey, {
        expiresIn: '1d' // 使用字符串格式定义有效期
    });
};

// 验证 JWT 字符串的方法
const verifyToken = expressjwt({
    secret: secretKey,
    algorithms: ['HS256']
}).unless({ // unless 方法同样来自 express-jwt
    path: [
        '/user/login', // 放行登录接口
        // 如果有其他不需要验证的路径也可以在这里添加
    ]
});

// 导出
module.exports = {
    createToken,
    verifyToken
};